package com.itheima.sh;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;

import java.net.UnknownHostException;

@SpringBootApplication
//@SpringBootConfiguration
    // 对@Configuration包装，作用：替代applicationContext.xml 配置文件
    // 当前注解加在类上，当前类就叫做：配置类，替代配置文件， 配置bean
    // 引导类 其实也是 配置类
//@EnableAutoConfiguration  开启自动化配置（核心）
    // 1 通过源码找到所有的自动化配置的类   XXXAutoConfiguration.class
    // 2 根据条件判断当前的自动化配置类是否被加载到IOC容器中  ConditionalOnXXX.class 注解
    // 3 如果条件满足，加载默认的配置信息，实例化Bean存到IOC容器中  XXXProperties
    // @AutoConfigurationPackage  获取当前工程中所有的自动化配置的包
    // AutoConfigurationImportSelector 自动配置导入选择器
        // Redis  RedisAutoConfiguration Redis自动化配置的类，RedisProperties 加载默认的自动化配置的属性
//@ComponentScan
    // 扫描包：默认的规则是扫描当前类所在的包及其子包的所有的带注解的类
@MapperScan("com.itheima.sh.mapper")
public class MybatisApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }


    @Bean  // redisTemplate
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
            throws UnknownHostException {
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        System.out.println("redisTemplate....");
        return template;
    }

}
